TypeScriptμ μ μ  νμ΄νμ΄ κ°μ κ΅μ€μ μ΄λ»κ² ν₯μμν€κ³ , μ격 νμ΅ νκ²½μμ μ½λ νμ§, μ μ§λ³΄μμ±, νμ μ κ°μ νλμ§ νꡬν©λλ€.
TypeScript κ°μ κ΅μ€: μ격 νμ΅ μ ν ꡬν
μ격 νμ΅μΌλ‘μ μ νμ μ ν΅μ μΈ κ΅μ€ κ²½νμ 볡μ νλλ‘ μ€κ³λ λμ§νΈ λꡬ λ° νλ«νΌμ μ±νμ κ°μννμ΅λλ€. μ΄ μ§ννλ νκ²½ λ΄μμ μννΈμ¨μ΄λ κ΅μ‘ μ½ν μΈ λ₯Ό μ 곡νκ³ , μνΈ μμ©μ μ΄μ§νλ©°, νμ μ§ν μν©μ κ΄λ¦¬νλ λ° μ€μν μν μ ν©λλ€. μ μ  νμ΄νμ μΆκ°νλ JavaScriptμ μμ μ§ν©μΈ TypeScriptλ κ°λ ₯νκ³ μ μ§λ³΄μ κ°λ₯νλ©° νμ μ μΈ κ°μ κ΅μ€ μ ν리μΌμ΄μ μ κ°λ°νλ λ° μλΉν μ΄μ μ μ 곡ν©λλ€. μ΄ κΈμ κ°μ κ΅μ€ κ°λ°μμ TypeScript μ¬μ©μ μ΄μ μ νꡬνλ©°, TypeScriptμ νμ μμ€ν μ΄ μ½λ νμ§μ μ΄λ»κ² ν₯μμν€κ³ , κ°λ°μ κ°μ νμ μ κ°ννλ©°, κΆκ·Ήμ μΌλ‘ λ ν¨κ³Όμ μ΄κ³ λ§€λ ₯μ μΈ μ격 νμ΅ κ²½νμ κΈ°μ¬νλμ§ μ΄ν΄λ΄ λλ€.
κ°μ κ΅μ€μ TypeScriptλ₯Ό μ¬μ©νλ μ΄μ ?
κ°μ κ΅μ€μ κ³ μ ν μννΈμ¨μ΄ 곡νμ  κ³Όμ λ₯Ό μ μν©λλ€. μ΄λ€μ μ’ μ’ λ³΅μ‘ν ν΄λΌμ΄μΈνΈ μΈ‘ μνΈ μμ©, μ€μκ° λ°μ΄ν° λκΈ°ν λ° λ€μν μΈλΆ μλΉμ€μμ ν΅ν©μ ν¬ν¨ν©λλ€. μ μ°νμ§λ§ JavaScriptλ λκ·λͺ¨ νλ‘μ νΈμμ κ΄λ¦¬νκΈ° μ΄λ €μΈ μ μμ΅λλ€. TypeScriptλ λ€μμ μ 곡ν¨μΌλ‘μ¨ μ΄λ¬ν κ³Όμ λ₯Ό ν΄κ²°ν©λλ€:
- μ μ  νμ΄ν: κ°λ° μ€ μ΄κΈ° λ¨κ³μμ μ€λ₯λ₯Ό ν¬μ°©νμ¬ λ°νμμ λ°μνλ μμμΉ λͺ»ν λ¬Έμ λ₯Ό μ€μ λλ€.
 - ν₯μλ μ½λ μ μ§λ³΄μμ±: μκ°μ΄ μ§λ¨μ λ°λΌ μ½λλ₯Ό μ΄ν΄νκ³ , 리ν©ν λ§νλ©°, μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
 - κ°νλ νμ : λͺ νν μΈν°νμ΄μ€μ νμ μ μλ₯Ό μ 곡νμ¬ κ°λ°μ κ°μ μνν νμ μ μ΄μ§ν©λλ€.
 - νλΆν IDE μ§μ: μλ μμ±, 리ν©ν λ§, νμ κ²μ¬μ κ°μ κΈ°λ₯μ μ 곡νμ¬ κ°λ°μ μμ°μ±μ ν₯μμν΅λλ€.
 
μ΄λ¬ν μ΄μ μ μννΈμ¨μ΄μ μ λ’°μ±κ³Ό μ μ§λ³΄μμ±μ΄ νμλ€μ νμ΅ κ²½νκ³Ό κ΅μ‘μμ ν¨μ¨μ±μ μ§μ μ μΈ μν₯μ λ―ΈμΉλ μ격 νμ΅ νκ²½μμ νΉν μ€μν©λλ€.
TypeScriptμ μ£Όμ κΈ°λ₯ λ° κ°μ κ΅μ€μμμ μ μ©
1. κ°λ ₯ν νμ΄ν λ° μΈν°νμ΄μ€ μ μ
TypeScriptμ κ°λ ₯ν νμ΄νμ κ°λ°μκ° λ³μ, ν¨μ λ§€κ°λ³μ λ° λ°ν κ°μ νμ μ μ μν μ μλλ‘ ν©λλ€. μ΄λ μλͺ»λ λ°μ΄ν° νμ μ μ λ¬νκ±°λ μ‘΄μ¬νμ§ μλ μμ±μ μ κ·Όνλ κ²κ³Ό κ°μ μΌλ°μ μΈ μ€λ₯λ₯Ό λ°©μ§νλ λ° λμμ΄ λ©λλ€. μΈν°νμ΄μ€λ κ°μ²΄μ ꡬ쑰λ₯Ό μ§μ νλ κ³μ½μ μ μνμ¬ μ½λλ² μ΄μ€μ μ¬λ¬ λΆλΆμ΄ μννκ² ν¨κ» μλνλλ‘ λ³΄μ₯ν©λλ€.
μμ: νμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ κ°μ κ΅μ€ μ ν리μΌμ΄μ μ μκ°ν΄ λ΄ μλ€. `Student` κ°μ²΄μ λν μΈν°νμ΄μ€λ₯Ό μ μν μ μμ΅λλ€:
            
interface Student {
  id: number;
  firstName: string;
  lastName: string;
  email: string;
  courses: string[];
}
function enrollStudent(student: Student, courseId: string): void {
  // Implementation to enroll the student in the course
  console.log(`Enrolling student ${student.firstName} ${student.lastName} in course ${courseId}`);
}
const newStudent: Student = {
  id: 123,
  firstName: "Alice",
  lastName: "Smith",
  email: "alice.smith@example.com",
  courses: []
};
enrollStudent(newStudent, "Math101");
            
          
        `Student` μΈν°νμ΄μ€λ₯Ό μ μν¨μΌλ‘μ¨, `enrollStudent` ν¨μκ° μμλλ μμ±μ κ°μ§ κ°μ²΄λ₯Ό λ°λλ‘ λ³΄μ₯ν©λλ€. μ΄ μΈν°νμ΄μ€μ λ§μ§ μλ κ°μ²΄λ₯Ό μ λ¬νλ €κ³ νλ©΄ TypeScriptλ μ»΄νμΌ νμ μ€λ₯λ₯Ό λ°μμν¬ κ²μ λλ€.
2. ν΄λμ€ λ° κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
TypeScriptλ ν΄λμ€λ₯Ό μ§μνμ¬ κ°λ°μκ° κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP) μμΉμ μ¬μ©νμ¬ μ½λλ₯Ό ꡬ쑰νν μ μλλ‘ ν©λλ€. μ΄λ νμ, κ΅μ¬, κ°μ’ λ° κ³Όμ μ κ°μ κ°μ κ΅μ€μ μν°ν°λ₯Ό λͺ¨λΈλ§νλ λ° νΉν μ μ©ν©λλ€.
μμ: `courseId`, `name`, `instructor`μ κ°μ μμ±μ κ°μ§ `Course` ν΄λμ€λ₯Ό μμ±ν μ μμ΅λλ€:
            
class Course {
  courseId: string;
  name: string;
  instructor: string;
  students: Student[] = [];
  constructor(courseId: string, name: string, instructor: string) {
    this.courseId = courseId;
    this.name = name;
    this.instructor = instructor;
  }
  addStudent(student: Student): void {
    this.students.push(student);
  }
  getStudentCount(): number {
    return this.students.length;
  }
}
const math101 = new Course("Math101", "Introduction to Mathematics", "Dr. Jane Doe");
math101.addStudent(newStudent);
console.log(`Number of students in ${math101.name}: ${math101.getStudentCount()}`);
            
          
        ν΄λμ€λ₯Ό μ¬μ©νλ©΄ λ°μ΄ν°μ λμμ μΊ‘μννμ¬ μ½λλ₯Ό λ 체κ³μ μ΄κ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λ€ μ μμ΅λλ€. λν μμκ³Ό λ€νμ±μ ν΅ν΄ μ½λ μ¬μ¬μ©μ μ΄μ§ν©λλ€.
3. μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μν μ λ€λ¦
μ λ€λ¦μ νμ μμ μ±μ ν¬μνμ§ μκ³ λ λ€μν λ°μ΄ν° νμ κ³Ό ν¨κ» μλν μ μλ μ½λλ₯Ό μμ±ν μ μλλ‘ ν©λλ€. μ΄λ λ°μ΄ν° ν μ΄λΈ, νΌ λλ λͺ©λ‘κ³Ό κ°μ κ°μ κ΅μ€ μ ν리μΌμ΄μ μμ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μμ±νλ λ° νΉν μ μ©ν©λλ€.
μμ: API μλν¬μΈνΈμμ λ°μ΄ν°λ₯Ό κ²μνλ ν¨μλ₯Ό μκ°ν΄ λ΄ μλ€. ν¨μκ° λ°ννλ λ°μ΄ν°μ νμ μ μ§μ νκΈ° μν΄ μ λ€λ¦μ μ¬μ©ν μ μμ΅λλ€:
            
async function fetchData(url: string): Promise {
  const response = await fetch(url);
  const data: T = await response.json();
  return data;
}
interface Assignment {
  id: number;
  title: string;
  dueDate: string;
}
async function getAssignments(): Promise {
  const assignments = await fetchData("/api/assignments");
  return assignments;
}
getAssignments().then(assignments => {
  console.log("Assignments:", assignments);
});
    
            
          
        μ΄ μμμμ `fetchData`λ λͺ¨λ νμ μ λ°μ΄ν°λ₯Ό κ²μνλ λ° μ¬μ©λ μ μλ μ λ€λ¦ ν¨μμ λλ€. `getAssignments` ν¨μλ `fetchData`λ₯Ό μ¬μ©νμ¬ `Assignment` κ°μ²΄μ λ°°μ΄μ κ²μνλ©°, λ°νλ λ°μ΄ν°κ° `Assignment` μΈν°νμ΄μ€λ₯Ό μ€μνλλ‘ λ³΄μ₯ν©λλ€.
4. μ λμΈ νμ λ° νλ³λ μ λμΈ
μ λμΈ νμ μ λ³μκ° λ€λ₯Έ νμ μ κ°μ κ°μ§ μ μλλ‘ ν©λλ€. νλ³λ μ λμΈμ μ λμΈ νμ κ³Ό κ³΅ν΅ νλ³ μμ±μ κ²°ν©νμ¬ νμ μμ ν μ‘°κ±΄λΆ λ‘μ§μ μμ±ν μ μλλ‘ ν©λλ€.
μμ: κ°μ κ΅μ€μμ μ¬μ©μλ νμ λλ κ΅μ¬μΌ μ μμ΅λλ€. μ΄λ₯Ό λνλ΄κΈ° μν΄ μ λμΈ νμ μ μ μν μ μμ΅λλ€:
            
interface StudentUser {
  type: "student";
  id: number;
  name: string;
  studentId: string;
}
interface TeacherUser {
  type: "teacher";
  id: number;
  name: string;
  employeeId: string;
}
type User = StudentUser | TeacherUser;
function greetUser(user: User): void {
  switch (user.type) {
    case "student":
      console.log(`Hello Student ${user.name} (ID: ${user.studentId})`);
      break;
    case "teacher":
      console.log(`Hello Professor ${user.name} (Employee ID: ${user.employeeId})`);
      break;
    default:
      //Should not happen if types are set up correctly
      console.log("Unknown user type");
  }
}
const studentUser: StudentUser = {
  type: "student",
  id: 1,
  name: "Bob Johnson",
  studentId: "S12345"
};
const teacherUser: TeacherUser = {
  type: "teacher",
  id: 2,
  name: "Dr. Alice Brown",
  employeeId: "E67890"
};
greetUser(studentUser);
greetUser(teacherUser);
            
          
        `User` νμ μ `StudentUser`μ `TeacherUser`μ μ λμΈμ λλ€. `type` μμ±μ νλ³μ μν μ νμ¬ νΉμ  μ¬μ©μ νμ μ κ²°μ νκ³ μ μ ν μμ±μ μ κ·Όν μ μλλ‘ ν©λλ€.
5. λΉλκΈ° μμ μ μν Async/Await
κ°μ κ΅μ€μ μ’ μ’ APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ μ€μκ° ν΅μ μ μ²λ¦¬νλ κ²κ³Ό κ°μ λΉλκΈ° μμ μ ν¬ν¨ν©λλ€. TypeScriptμ async/await ꡬ문μ λΉλκΈ° μ½λ μμ μ λ¨μννμ¬ λ μ½κΈ° μ½κ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
μμ: μλ²μμ κ°μ’ λͺ©λ‘ κ°μ Έμ€κΈ°:
            
interface CourseData {
  id: string;
  name: string;
  description: string;
}
async function fetchCourses(): Promise {
  try {
    const response = await fetch("/api/courses");
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    const courses: CourseData[] = await response.json();
    return courses;
  } catch (error) {
    console.error("Error fetching courses:", error);
    return []; // Return an empty array in case of error
  }
}
fetchCourses().then(courses => {
  console.log("Courses:", courses);
});
 
            
          
        `async` ν€μλλ₯Ό μ¬μ©νλ©΄ `await`λ₯Ό μ¬μ©νμ¬ `fetch` μμ μ΄ μλ£λ λκΉμ§ ν¨μμ μ€νμ μΌμ μ€μ§ν μ μμ΅λλ€. μ΄λ μ½λ°±μ΄λ νλ‘λ―Έμ€λ₯Ό μ§μ  μ¬μ©νλ κ²μ λΉν΄ μ½λλ₯Ό λ μ½κΈ° μ½κ³ μΆλ‘ νκΈ° μ½κ² λ§λλλ€.
κ°μ κ΅μ€ κ°λ°μμ TypeScriptμ μ€μ©μ μΈ μμ
1. μ€μκ° νμ κΈ°λ₯
TypeScriptλ 곡μ νμ΄νΈλ³΄λ, ν μ€νΈ νΈμ§κΈ°, νμ νμμ κ°μ μ€μκ° νμ κΈ°λ₯μ κ°λ°νλ λ° μ¬μ©λ μ μμ΅λλ€. Socket.IO λ° WebRTCμ κ°μ λΌμ΄λΈλ¬λ¦¬λ TypeScriptμ ν΅ν©λμ΄ μ΄λ¬ν κΈ°λ₯μ ꡬμΆν μ μμ΅λλ€.
μμ: 곡μ νμ΄νΈλ³΄λ ꡬν:
μλ² μΈ‘ (Node.js with TypeScript):
            
import { Server, Socket } from "socket.io";
interface DrawEvent {
  x: number;
  y: number;
  color: string;
  size: number;
}
const io = new Server(3000, {
  cors: {
    origin: "*",
    methods: ["GET", "POST"]
  }
});
io.on("connection", (socket: Socket) => {
  console.log("A user connected");
  socket.on("draw", (data: DrawEvent) => {
    socket.broadcast.emit("draw", data);
  });
  socket.on("disconnect", () => {
    console.log("A user disconnected");
  });
});
console.log("Server running on port 3000");
            
          
        ν΄λΌμ΄μΈνΈ μΈ‘ (λΈλΌμ°μ μ TypeScript):
            
import { io, Socket } from "socket.io-client";
interface DrawEvent {
  x: number;
  y: number;
  color: string;
  size: number;
}
const socket: Socket = io("http://localhost:3000");
const canvas = document.getElementById("whiteboard") as HTMLCanvasElement;
const ctx = canvas.getContext("2d")!;
canvas.addEventListener("mousedown", (e) => {
  let drawing = true;
  canvas.addEventListener("mouseup", () => drawing = false);
  canvas.addEventListener("mouseout", () => drawing = false);
  canvas.addEventListener("mousemove", (e) => {
    if (!drawing) return;
    const x = e.clientX - canvas.offsetLeft;
    const y = e.clientY - canvas.offsetTop;
    const drawEvent: DrawEvent = {
      x: x,
      y: y,
      color: "black",
      size: 5,
    };
    socket.emit("draw", drawEvent);
    drawOnCanvas(drawEvent);
  });
});
socket.on("draw", (data: DrawEvent) => {
  drawOnCanvas(data);
});
function drawOnCanvas(data: DrawEvent) {
  ctx.fillStyle = data.color;
  ctx.fillRect(data.x, data.y, data.size, data.size);
}
            
          
        μ΄ μμλ TypeScriptκ° ν΄λΌμ΄μΈνΈμ μλ² κ°μ κ΅νλλ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνκ³ , νμ μμ μ±μ 보μ₯νλ©°, μ€λ₯λ₯Ό λ°©μ§νλ λ° μ΄λ»κ² μ¬μ©λ μ μλμ§λ₯Ό 보μ¬μ€λλ€.
2. νκ° λ° μ±μ  μμ€ν 
TypeScriptλ νμ μ±κ³Ό νκ° κ³Όμ μ μλννλ νκ° λ° μ±μ  μμ€ν μ κ°λ°νλ λ° μ¬μ©λ μ μμ΅λλ€. μ¬κΈ°μλ ν΄μ¦ μλ μ±μ , κ³Όμ  μ μΆ, νμ μ§ν μν© μΆμ κ³Ό κ°μ κΈ°λ₯μ΄ ν¬ν¨λ μ μμ΅λλ€.
μμ: ν΄μ¦ μ±μ  μμ€ν  ꡬν:
            
interface Question {
  id: number;
  text: string;
  options: string[];
  correctAnswer: number;
}
interface QuizResult {
  studentId: number;
  score: number;
  totalQuestions: number;
}
function gradeQuiz(answers: number[], questions: Question[]): QuizResult {
  let score = 0;
  for (let i = 0; i < questions.length; i++) {
    if (answers[i] === questions[i].correctAnswer) {
      score++;
    }
  }
  return {
    studentId: 123, // Example student ID
    score: score,
    totalQuestions: questions.length,
  };
}
const quizQuestions: Question[] = [
  {
    id: 1,
    text: "What is the capital of France?",
    options: ["London", "Paris", "Berlin", "Rome"],
    correctAnswer: 1,
  },
  {
    id: 2,
    text: "What is 2 + 2?",
    options: ["3", "4", "5", "6"],
    correctAnswer: 1,
  },
];
const studentAnswers: number[] = [1, 1]; // Correct answers
const quizResult = gradeQuiz(studentAnswers, quizQuestions);
console.log("Quiz Result:", quizResult);
            
          
        μ΄ μμλ TypeScriptμ νμ μμ€ν μ΄ ν΄μ¦ μ±μ  μμ€ν μ΄ μ¬λ°λ₯Έ μ λ ₯ λ°μ΄ν°λ₯Ό λ°κ³ μ νν κ²°κ³Όλ₯Ό μμ±νλλ‘ λ³΄μ₯νλ λ° μ΄λ»κ² μ¬μ©λ μ μλμ§λ₯Ό 보μ¬μ€λλ€.
3. κ°μΈ λ§μΆ€ν νμ΅ κ²½ν
TypeScriptλ κ° νμμ κ°λ³ μꡬμ λ§μΆ° μ‘°μ λλ κ°μΈ λ§μΆ€ν νμ΅ κ²½νμ κ°λ°νλ λ° μ¬μ©λ μ μμ΅λλ€. μ¬κΈ°μλ μ μν νμ΅ κ²½λ‘, κ°μΈ λ§μΆ€ν νΌλλ°±, λ§μΆ€ν μ½ν μΈ μΆμ²κ³Ό κ°μ κΈ°λ₯μ΄ ν¬ν¨λ μ μμ΅λλ€.
μμ: μ μν νμ΅ κ²½λ‘ κ΅¬ν:
            
interface LearningModule {
  id: number;
  title: string;
  content: string;
  prerequisites: number[];
}
interface StudentProgress {
  studentId: number;
  completedModules: number[];
}
function recommendNextModule(studentProgress: StudentProgress, modules: LearningModule[]): LearningModule | null {
  // Find modules that the student hasn't completed
  const incompleteModules = modules.filter(module => !studentProgress.completedModules.includes(module.id));
  // Find modules whose prerequisites have been met
  const availableModules = incompleteModules.filter(module => {
    return module.prerequisites.every(prerequisite => studentProgress.completedModules.includes(prerequisite));
  });
  // Return the first available module, or null if none are available
  return availableModules.length > 0 ? availableModules[0] : null;
}
const learningModules: LearningModule[] = [
  {
    id: 1,
    title: "Introduction to Algebra",
    content: "...",
    prerequisites: [],
  },
  {
    id: 2,
    title: "Solving Equations",
    content: "...",
    prerequisites: [1],
  },
  {
    id: 3,
    title: "Graphing Linear Equations",
    content: "...",
    prerequisites: [2],
  },
];
const studentProgress: StudentProgress = {
  studentId: 456,
  completedModules: [1],
};
const nextModule = recommendNextModule(studentProgress, learningModules);
if (nextModule) {
  console.log(`Recommended next module: ${nextModule.title}`);
} else {
  console.log("No more modules available.");
}
            
          
        μ΄ μμλ TypeScriptκ° νμ΅ λͺ¨λ λ° νμ μ§ν μν© λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνκ³ , κ° νμμ κ°λ³ μꡬμ λ§μΆ°μ§ μ μν νμ΅ κ²½λ‘ κ°λ°μ κ°λ₯νκ² νλ λ°©λ²μ 보μ¬μ€λλ€.
κ°μ κ΅μ€ κ°λ°μμ TypeScript μ¬μ©μ μν λͺ¨λ² μ¬λ‘
- νμ μ΄λ Έν μ΄μ  μ κ·Ή νμ©: λͺ νμ±μ μ 곡νκ³ μ€λ₯λ₯Ό λ°©μ§νκΈ° μν΄ νμ μ΄λ Έν μ΄μ μ μμ λ‘κ² μ¬μ©νμΈμ.
 - μΈν°νμ΄μ€μ ν΄λμ€ νμ©: κ³μ½μ μ μνκΈ° μν΄ μΈν°νμ΄μ€λ₯Ό μ¬μ©νκ³ , μν°ν°λ₯Ό λͺ¨λΈλ§νκΈ° μν΄ ν΄λμ€λ₯Ό μ¬μ©νμΈμ.
 - μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μν μ λ€λ¦ μ¬μ©: λ€μν λ°μ΄ν° νμ κ³Ό μλνλ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μ λ€λ¦μ μ¬μ©νμ¬ μμ±νμΈμ.
 - λ¨μ ν μ€νΈ μμ±: μ½λκ° μ¬λ°λ₯΄κ² μλνλμ§ νμΈνκΈ° μν΄ λ¨μ ν μ€νΈλ₯Ό μμ±νμΈμ.
 - μΌκ΄λ μ½λ© μ€νμΌ μ μ§: μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κΈ° μν΄ μΌκ΄λ μ½λ© μ€νμΌμ λ°λ₯΄μΈμ.
 - λ¦°ν° λ° ν¬λ§·ν° μ¬μ©: μ½λ© νμ€μ κ°μ νκ³ μ½λλ₯Ό μλμΌλ‘ ν¬λ§·νκΈ° μν΄ λ¦°ν° λ° ν¬λ§·ν°λ₯Ό μ¬μ©νμΈμ. ESLintμ Prettierλ μΌλ°μ μΈ λꡬμ λλ€.
 - μ§μμ  ν΅ν© λ° μ§μμ  λ°°ν¬ (CI/CD): λΉλ, ν μ€νΈ λ° λ°°ν¬ νλ‘μΈμ€λ₯Ό μλννκΈ° μν΄ CI/CD νμ΄νλΌμΈμ ꡬννμΈμ.
 
κ΅μ‘ λΆμΌμμ TypeScriptμ λ―Έλ
κ°μ νμ΅μ΄ κ³μ λ°μ ν¨μ λ°λΌ, κ°λ ₯νκ³ νμ₯ κ°λ₯νλ©° μ μ§λ³΄μ κ°λ₯ν κ΅μ‘ νλ«νΌμ λ§λλ λ° μμ΄ TypeScriptμ μν μ λμ± μ»€μ§ κ²μ λλ€. κ·Έ κΈ°λ₯μ κ°λ°μ κ°μ νμ μ μ΄μ§νκ³ , μ½λ νμ§μ ν₯μμν€λ©°, κΆκ·Ήμ μΌλ‘ ν₯μλ νμ΅ κ²½νμ κΈ°μ¬ν©λλ€. κ°μ κ΅μ€ κ°λ°μμ TypeScriptμ μ±νμ λ¨μν κΈ°μ μ  μ κ·Έλ μ΄λκ° μλλΌ κ΅μ‘μ λ―Έλμ λν μ λ΅μ  ν¬μμ λλ€.
κ²°λ‘
TypeScriptλ κ°μ κ΅μ€ μ ν리μΌμ΄μ μ κ°λ°νλ κ°λ ₯νκ³ ν¨κ³Όμ μΈ λ°©λ²μ μ 곡ν©λλ€. κ·Έ μ μ  νμ΄ν, κ°μ²΄ μ§ν₯ κΈ°λ₯, λΉλκΈ° νλ‘κ·Έλλ° μ§μμ 볡μ‘νκ³ μνΈμμ©μ μΈ νμ΅ νλ«νΌμ ꡬμΆνλ λ° λ§€μ° μ ν©ν©λλ€. TypeScriptλ₯Ό μμ©ν¨μΌλ‘μ¨ κ°λ°μλ€μ μ  μΈκ³ νμλ€μ νμ΅ κ²½νμ ν₯μμν€λ λμ± μ λ’°ν μ μκ³ , μ μ§λ³΄μ κ°λ₯νλ©°, νμ μ μΈ κ°μ κ΅μ€ νκ²½μ λ§λ€ μ μμ΅λλ€. μ격 νμ΅μ λν μμκ° κ³μ μ¦κ°ν¨μ λ°λΌ TypeScriptλ κ΅μ‘μ λ―Έλλ₯Ό νμ±νλ λ° μ μ  λ μ€μν μν μ ν κ²μΌλ‘ μμλ©λλ€.